package cn.buddha.jeht;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.turbine.EnableTurbine;

/**
 * @ClassName HystrixTurbineApplication
 * @Author 友野浩二
 * @Description Turbine集群监控
 * @Version 1.0
 *
 * <pre>
 *     hystrix只能实现单个微服务的监控，but一般分布式系统中的微服务也是以集群的形式搭建(为了提高高可用性)，一个个的监控不现实。
 *     而turbine的原理是：建立一个turbine服务，并注册到eureka中，并发现eureka上的hystrix服务。通过配置turbine会自动收集
 *             所需hystrix的监控信息，最后通过dashboard展现，以达到集群监控的效果。
 *     简单说，就是通过注册到注册中心，发现其他服务的hystrix服务，然后进行聚合数据，最后通过自身的端点输出到仪表盘上进行个性化展示。
 *     这样的话，我们就只需要监控一个turbine应用即可，当有新增的应用加入时，我们只需要配置下turbine参数即可。
 * </pre>
 */
@SpringBootApplication
@EnableEurekaClient
@EnableTurbine
@Slf4j
public class HystrixTurbineApplication {

    public static void main(String[] args) {
        SpringApplication.run(HystrixTurbineApplication.class, args);
        log.info("<<<<======== Tong Hystrix Turbine Started ========>>>>");
    }

}
